package com.example.j280_webproject.userConsole.service;

import com.example.j280_webproject.userConsole.jdbc.BaseJDBC;
import com.example.j280_webproject.userConsole.jdbc.UserJDBC;
import org.json.JSONObject;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

public class PageService {
    /**
     * 通过前端页面传递的信息，完成分页数据返回
     *
     * @param showCountStr   每页显示多少条记录 字符串
     * @param pageStr        用户想看第几页数据 字符串
     * @return               返回指定页面的数据内容
     */
    public JSONObject page(String showCountStr,String pageStr){
        /**
         * 分页操作
         *     1. 我们需要知道总计有多少条记录(整个表中)     count代表总计
         *     2. 我们需要知道每页显示多少条记录(页面上)     showCount代表每页显示
         *     3. 然后根据固定的算法，计算出总计有多少页     page
         *     计算公式：总计条数-1 除以  每页显示条数  加1  得到最终的总计页数
         *          page = (count - 1)/showCount + 1;                      ***
         *
         *          // 每页开始的下标计算：  (页码 - 1)*每页显示多少条        ***
         */
        JSONObject jsonObject = new JSONObject();
        Connection connection = BaseJDBC.createConnection();
        UserJDBC userJDBC = new UserJDBC();
        try {
            int count = userJDBC.selectCount(connection);         //统计数据库总计有多少条记录
            int showCount = Integer.parseInt(showCountStr);       //把前端传递过来的每页显示多少条记录，转换为int类型，方便计算
            int allPage = (count - 1)/showCount + 1;              //计算总页码
            int page = Integer.parseInt(pageStr);                 //把前端传递的字符串页码转换为int类型
            int startIndex = (page - 1) * showCount;              //通过页码和每页显示多少条，计算需要从数据库的哪一条数据的下标开始获取
            ArrayList<JSONObject> list = userJDBC.Page(connection, startIndex, showCount);
            jsonObject.put("code",200);
            jsonObject.put("msg","查询用户分页数据成功");
            jsonObject.put("list",list);
            jsonObject.put("showCount", showCount);
            jsonObject.put("count", count);
            jsonObject.put("allPage", allPage);
            jsonObject.put("page", page);
        } catch (SQLException e) {
            e.printStackTrace();
            jsonObject.put("code",306);
            jsonObject.put("msg","系统繁忙，请稍后再试！");
        }
        return jsonObject;
    }
}
